from tensorflow.keras.models import load_model
from utils_imagenette.data_generator import test_generator,pred_generator
from utils_imagenette.image_plot import plot_images2

#读取测试集
test_gen = test_generator(
    data_dir='../dataset/imagenette/test',
    target_size=(64,64),
    batch_size=32,
    class_mode='categorical'
)

#读取预测集
pred_gen = pred_generator(
    data_dir='../dataset/imagenette/pred',
    target_size=(64,64),
    batch_size=32,
    class_mode=None
)


'''
模型载入tf.keras.models.load_model
用到的参数：
- filepath：载入模型存放的路径。

模型验证tf.keras.Sequential.evaluate
用到的参数：
- x：输入的验证集，可以用ImageDataGenerator读取的数据。

模型预测tf.keras.Sequential.predict
用到的参数：
- x：需要做预测的数据集，可以用ImageDataGenerator读取的数据。
'''
# 模型保存的相对路径
model_path = '../models/model-2020-11-22-20-47-28'
#载入模型
loaded_model = load_model(filepath=model_path)
#模型验证测试集
loss,accuracy = loaded_model.evaluate(x=test_gen)
print('测试集的损失是：{0}，准确率accuracy:{1}'.format(loss,accuracy))
#获取一个batch size预测集
pred_batch = pred_gen.next()
#载入的模型对一个batch size的预测集进行预测
pred_result = loaded_model.predict(x=pred_batch)
print('预测集一个batch 15张图片的预测结果：',pred_result)
#取15展预测集图片的结果进行查看
plot_images2(pred_batch,pred_result)